import json
import os
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.enum.text import PP_ALIGN


# 定义文件路径 - 使用相对于脚本文件的路径
script_dir = os.path.dirname(os.path.abspath(__file__))


# 定义JSON文件路径
JSON_FILE_PATH = os.path.join(script_dir, '..', 'output.json')
# PPT模板路径
PPT_FILE_PATH =  os.path.join(script_dir, '..','模板','8月.pptx')
prs = Presentation(PPT_FILE_PATH)

def gen_ppt_page(TEXT_TO_ADD):
    slides_count = len(prs.slides)

    # 检查是否有至少3张幻灯片
    if slides_count < 1:
        print(f"错误: PPT文件只有 {slides_count} 张幻灯片，无法复制第一页")
        return

    # 复制第三页幻灯片 (索引为2，因为从0开始计数)
    slide_layout = prs.slides[0].slide_layout
    new_slide = prs.slides.add_slide(slide_layout)
  

    # 添加文本框并设置属性
    left = Inches(0.5)  # 左对齐幻灯片边缘  
    top = Inches(1.5)
    # 设置文本框宽度为幻灯片宽度
    width = prs.slide_width - Inches(0.5)
    height = Inches(4)
    txBox = new_slide.shapes.add_textbox(left, top, width, height)
    tf = txBox.text_frame
    tf.word_wrap = True
    p = tf.add_paragraph()
    p.text = TEXT_TO_ADD
    p.font.size = Pt(36)
    p.font.bold = True
    return

def read_and_traverse_json(file_path):
    """
    读取JSON文件并遍历其中的数据
    :param file_path: JSON文件路径
    :return: 解析后的数据列表
    """
    try:
        # 打开并读取JSON文件
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)

        # 遍历JSON数据
        for i, item in enumerate(data, 1):
            # 检查每个条目是否包含'content'键
            if 'content' in item:
                gen_ppt_page(item['content'])

        return data
    except FileNotFoundError:
        print(f"错误: 找不到文件 {file_path}")
        return []
    except json.JSONDecodeError:
        print(f"错误: 无法解析文件 {file_path} 中的JSON数据")
        return []
    except Exception as e:
        print(f"处理文件时出错: {str(e)}")
        return []


if __name__ == "__main__":
    # 调用函数读取并遍历JSON数据
    json_data = read_and_traverse_json(JSON_FILE_PATH)
    
    # 保存修改后的PPT
    output_path =  os.path.join(script_dir, '..','模板','8月.pptx')
    prs.save(output_path)

